//es5 构造函数 + 原型

// function Person(name,age){
//     this.name = name;
//     this.age = age;
// }

// Person.prototype.sayName = function(){
//     console.log(this.name)
// }

// console.log(Person.prototype === p1.__proto__)

// console.log(Person.prototype.constructor  === Person)

// console.log(p1);

// function Student(name,age){
//     Person.apply(this,arguments);
// }

// Student.prototype = Object.create(Person.prototype);

// Student.prototype.constructor = Student;


// Student.prototype.learn = function(){
//     console.log('learn');
// }

// let s1 = new Student('zs',12);

// let p1 = new Person('ls',15);
// // p1.learn();

// console.log(s1.constructor)

//es6

//注：1>方法之间不能写','

//2>静态方法需要用构造函数来调用，不能用实例来调用

/**
 * 1>class定义的类没有提升
 * 
 * 2>在同一个作用域下不能重复定义
 * 
 * 3>class定义的类必须要使用new来调用
 * 
*/

class Person{  //只能写方法不能写语句
    constructor(name,age){  //默认的方法，默认执行  
        this.name = name;
        this.age = age;
    }
    sayName(){
        console.log(this.name)
    }
    init(){
        this.sayName()
        Person.add();
    }

    static add(){
        console.log('add')
    }
}

class Student extends Person{
    constructor(name,age,address="北京"){
        super(name,age)
        this.address = address;
    }

    learn(){
        console.log(this.address);
    }
}

let s1 = new Student('oo',10);

s1.learn()


let p1 = new Person('lili',10);

// p1.learn()

// // Person('lili',10);

// p1.init()

// p1.add();

// Array.isArray();



